<?php  include "headShow.php";
header('Content-Type: text/html; charset=utf-8');
// header("content-type: text/html; charset=gb2312");
$fileName="../../datas/dataFlagList.json";
$dataFlagList = file_get_contents($fileName);  
$content=json_decode($dataFlagList,true);
$allClsAndTitle=getClsTitle($content);

$cls=$_POST["cls"];
$fc=$_POST["fc"];
if($fc=="onClsShow")
{
 $reDict=array("flag"=>true,$cls=>$allClsAndTitle[$cls]);
    echo json_encode($reDict,true);
}


if($fc=="find")
{

 $rDict=array();

 foreach($allClsAndTitle as $getCls=>$values)
 {
  // 首先看有没有在类里面，在就都是，不在就看值是不是
       if(strstr($getCls, $cls)!=false)
       {
           if(!array_key_exists($getCls,$rDict))
           {
             $rDict[$getCls]=$values;
           }
          
       }
       else
       {
         foreach($values as $getValue)
         {
          
          if(strstr($getValue, $cls)!=false)
          {
            if(!array_key_exists($getCls,$rDict))
               {
                     $rDict[$getCls]=[$getValue];
               }
               else
               {
                array_push($rDict[$getCls],$getValue);
               }

          }
         }
       }
 }
 echo   json_encode($rDict,true);

}


if(strlen($fc)==0)
{
 $getJsonText=file_get_contents('php://input');
 $getJson=json_decode($getJsonText,true);
 $fc=$getJson["fc"];
}


// 保存
if($fc=="saveData")
{
 $dataFlag=str_replace(" ","",str_replace("\t","",str_replace("\n","",$getJson["dataFlag"])));
 $oDataFlag=str_replace(" ","",str_replace("\t","",str_replace("\n","",$getJson["oDataFlag"])));
 
 $content=$getJson["content"];
 $media=$getJson["media"];
 $subEd=$getJson["subEd"];
 $fileName="../../datas/dataFlagList.json";
 $fopFlag=file_get_contents($fileName);
    $dataFlagList = json_decode($fopFlag,true);
    // fclose($fopFlag);

    $fileNameLIST="../../datas/dataList.json";
    $fopList=file_get_contents($fileNameLIST);
    $dataList=json_decode($fopList,true);  
    // fclose($fopList);

    //只有第一次导入才查看有没有相同名称
 if($subEd=="no")
 {
    // 扫描$con目录下的所有文件
    $filename = scandir("../../datas/contents");
    foreach($filename as $k=>$v)
   {
    //由于名称中没有.txt而扫描的文件中有.txt所以错误。这里手动添加了.txt
            if(($dataFlag.".txt")==$v)
            {
               echo "changeNameOrClass";
               return "请修改分类或名称";
            }
   }
 } 
 
   

 if(!array_key_exists($dataFlag, $dataList))
 {  
  $dataList[$dataFlag]=array();
 }
   
 if(!in_array($dataFlag,$dataFlagList))
 {
      
  array_push($dataFlagList,$dataFlag);
 }     

  // 这里删除旧的文件
  
    if($dataFlag!=$oDataFlag)
    {
        if(array_key_exists($oDataFlag,$dataList))
        {
         // 删除名称表中数据
         $dataList[$dataFlag]=$dataList[$oDataFlag];
   // $key1=array_search($oDataFlag,$dataFlagList);
   unset($dataList[$oDataFlag]);
        }

        if(in_array($oDataFlag,$dataFlagList))
        {
         // 删除名称表中数据
   $key1=array_search($oDataFlag,$dataFlagList);
   unset($dataFlagList[$key1]);
   //删除旧的文本文本
   $existFile="../../datas/contents/".$oDataFlag.".txt";
   if (file_exists($existFile)) 
   {
     unlink($existFile);
   } 
        }
    }
    
  //********下面是在保存时清理图片和文件垃圾*********************
    // 这里通过对比数据库和数据名实现的。
    if(array_key_exists($dataFlag,$dataList))
    {
     //echo json_encode($dataList,JSON_UNESCAPED_UNICODE);
     //return 23;
     foreach($dataList[$dataFlag] as $value)
     { 
      if(!in_array($value,$media))
      {  
       $getImgKey=array_search($value,$dataList[$dataFlag]);
       unset($dataList[$dataFlag][$getImgKey]);
       unlink($value);
      }
     }
     if($dataList[$dataFlag]==null)
  {
      $dataList[$dataFlag]=array();
  }
    }

    

    

 
    // 由于某种原因可能导致dataflagelist或者datalist列表为空或者null
    // 导致所有的图片都被删除了，所以这里要判断一下
    
    if($dataFlagList!=null and  $dataList!=null )
    {
     
  $wFile="../../datas/contents/".$dataFlag.".txt";
  $file3= fopen($wFile, "w");
  if(  flock($file3, LOCK_EX))
     {
      file_put_contents($fileNameLIST,json_encode($dataList,JSON_UNESCAPED_UNICODE));
      file_put_contents($fileName,json_encode($dataFlagList,JSON_UNESCAPED_UNICODE));
     //跟新文本
      fwrite($file3,$content);
      flock($file3, LOCK_UN); // 释放锁定
      fclose($file3);
     }
     else
     {
      echo "txt lock";
      return ;
     }
  echo "ok";
    
    }else
    {
     echo "false";
    }
}


if($fc=="dele")
{
 $dataFlag=str_replace(" ","",str_replace("\t","",str_replace("\n","",$_POST["dataFlag"]))); 
 
 $fileName="../../datas/dataFlagList.json";
 $fopFlag=file_get_contents($fileName);
    $dataFlagList = json_decode($fopFlag,true);
   
    $fileNameLIST="../../datas/dataList.json";
    $fopList=file_get_contents($fileNameLIST);
    $dataList=json_decode($fopList,true);  
    $titleFlag=0;
    $mediaFlag=0;
    
   // 删除名称表中数据
   // 删除数据表中数据
   // 删除照片
   foreach ($dataFlagList as $key => $value) 
   {
        if($value==$dataFlag)
        {
         // 删除照片
            if(array_key_exists($dataFlag,$dataList))
            {
             foreach($dataList[$dataFlag] as $imgValue)
       {
     if (file_exists($imgValue)) 
     {
        unlink($imgValue);
     } 
       } 
       //清除列表中关键字
       unset($dataList[$dataFlag]);
      }

      // 删除文件
         $existFile="../../datas/contents/".$value.".txt";
   if (file_exists($existFile)) 
   {
     unlink($existFile);
   } 
   $titleFlag=1;
      $mediaFlag=1;
         unset($dataFlagList[$key]);
     }
   }

    // 要进行数据库的更改。
   if($titleFlag==1&&$mediaFlag==1)
   {
        //必须使用json_encode转码否则空的数组保存时里面没有括号完全是空的
     
  file_put_contents($fileName,json_encode($dataFlagList,JSON_UNESCAPED_UNICODE));
  file_put_contents($fileNameLIST,json_encode($dataList,JSON_UNESCAPED_UNICODE));
  echo  "ok";
  return;
   }
   else
   {
     echo "titleFlag=0&&mediaFlag=0，删除失败";
     return;
   }
    
}


//上传文件
$uploadFlag=$_REQUEST['fc']; 
if($uploadFlag=="uploadImg")
{   
    $mediaFileName=$_FILES['file']["name"];
    $tmp_name=$_FILES['file']["tmp_name"];
    //$newFileName="../../static/media/".time()."-".$mediaFileName;
    //视频文件太大返回的名称不知道为啥为空，那么不在php生产名称而是用js中名称，
    //这样就不用返回名称了，js可以直接获得js中名称
    $newFileName="../../static/media/".$_REQUEST['fileName']; 
    move_uploaded_file($tmp_name, $newFileName);
    // 解决js编码问题：js支持utf-8，二php支持gb2312；
    header('Content-Type:text/html;charset=utf-8');
    //视频文件太大返回的名称不知道为啥为空
    $subEd=$_REQUEST['subEd'];
    $oDataFlag=$_REQUEST['oDataFlag'];
    $dataListPath="../../datas/dataList.json";
    $dataListOp= file_get_contents($dataListPath);  
 $dataList=json_decode($dataListOp,true);

 $dataFlagListPath="../../datas/dataFlagList.json";
 $dataFlagListOP = file_get_contents($dataFlagListPath);  
 $dataFlagList=json_decode($dataFlagListOP,true);
    
    $dataFlag=str_replace(" ","",$_REQUEST['dataFlag']);
 
    //只有第一次导入才查看有没有相同名称
 if($subEd=="no")
 {
    // 扫描$con目录下的所有文件
    $filename = scandir("../../datas/contents");
    foreach($filename as $k=>$v)
   {
    //由于名称中没有.txt而扫描的文件中有.txt所以错误。这里手动添加了.txt
            if(($dataFlag.".txt")==$v)
            {
               echo "changeNameOrClass";
               return "请修改分类或名称";
            }
   }
 } 

 if(!array_key_exists($dataFlag, $dataList))
 {
  $dataList[$dataFlag]=array($newFileName);
  
 }
 
 
 //必须看列表中是否有旧的名称，不能使用只$oDataFlag!="#-#"，
 //要用array_key_exists($oDataFlag, $dataList)
 //因为每次是点击分类后地址中带有分类，导致$oDataFlag为“分类#-#”
 //所以导致错误。而直接点击导入就没有
 if($oDataFlag!=$dataFlag and $oDataFlag!="#-#" and array_key_exists($oDataFlag, $dataList))
   {
      $dataList[$dataFlag]=$dataList[$oDataFlag];
      unset($dataList[$oDataFlag]);
      $key1=array_search($oDataFlag,$dataFlagList);
      unset($dataFlagList[$key1]);
      $existFile="../../datas/contents/".$oDataFlag.".txt";
      $newFile="../../datas/contents/".$dataFlag.".txt";
      if(file_exists($existFile))
      {
        //unlink($existFile);
        rename($existFile,$newFile);
      } 
   }

 if(!array_key_exists($dataFlag, $dataList))
  {
    $dataList[$dataFlag]=array($newFileName);
  } 
elseif(!in_array($newFileName,$dataList[$dataFlag]))
   {
      array_push($dataList[$dataFlag],$newFileName);
   
   }
   if(!in_array($dataFlag,$dataFlagList))
   {
     array_push($dataFlagList,$dataFlag);
   }
  // print_r(json_encode($dataList,JSON_UNESCAPED_UNICODE));
  // return 23;
 //写入文件列表
 file_put_contents($dataFlagListPath,json_encode($dataFlagList,JSON_UNESCAPED_UNICODE));
 file_put_contents( $dataListPath,json_encode($dataList,JSON_UNESCAPED_UNICODE));
  echo   "ok";
  }
 ?>